#include <stdint.h>
#include "lib_td_cmd.h"
/* 也适用于C++ */


_FUNCCALLBACK *lib_cb_list;
uint16_t lib_cmd_list_max = 0;

void lib_td_cmd_init(_FUNCCALLBACK *cb_list, uint16_t cmd_list_max)
{
    lib_cb_list = cb_list;
    lib_cmd_list_max = cmd_list_max;
}

#if CMD_TYPE_INT
// 任务轮询, 核心处理函数, 处理int类型的命令
void lib_td_cmd_poll_task(uint8_t cmd, uint8_t *msg, uint8_t len)
{
    int cmd_index = 0;
 
    for (cmd_index = 0; cmd_index < lib_cmd_list_max; cmd_index++)
    {
        if (lib_cb_list[cmd_index].CMD == cmd)
        {
            if (lib_cb_list[cmd_index].callback_func)
            {
                /* 处理逻辑  */
                lib_cb_list[cmd_index].callback_func(cmd, msg, len);
            }
        }
    }
}

#endif

#if CMD_TYPE_STR

// 定义 commands 数组
const Command commands[] = {
    {"cmd1", 1},
    {"cmd2", 2},
    {"cmd3", 3},
    {"cmd4", 4}
};

// 任务轮询, 核心处理函数, 处理string类型的命令CMD
void lib_td_cmd_poll_task_str(uint8_t cmd, uint8_t *msg, uint8_t len)
{
    int cmd_index = 0;

    for (cmd_index = 0; cmd_index < lib_cmd_list_max; cmd_index++)
    {
        if (lib_cb_list[cmd_index].CMD == cmd)
        {
            if (lib_cb_list[cmd_index].callback_func)
            {
                /* 处理逻辑  */
                lib_cb_list[cmd_index].callback_func(cmd, msg, len);
            }
        }
    }
}
#endif